Skip to main content

Objet : Tâche

Symbole : _cds_icon_task_editor.png

Vous configurez la tâche dans l'objet. Vous pouvez configurer la priorité, le type avec le comportement temporel et un chien de garde. Vous pouvez également ajouter PROGRAM appels.

L'objet se trouve dans l'arborescence des appareils, en dessous de Configuration des tâches.

Onglet : Configuration

Objet : _cds_icon_task_editor.png Tâche

Priorité

Valeurs possibles : 0..31, où 0 est la priorité la plus élevée

Groupe de tâches

Attribué groupes de tâches qui peut être affecté à des cœurs de processeur spécifiques en multicœur

Exemple: Tâches CEI

Remarque : Le groupe de tâches est affiché entre parenthèses après la tâche dans l'arborescence des périphériques.

Important

Lors de l'utilisation d'un système d'exécution sous Linux, il existe des dépendances fixes entre les groupes de tâches et les priorités. Pour plus d'informations, consultez : Cartographie des priorités des tâches sur un système Linux

Taper

Tapez : _cds_icon_task_periodic.png Cyclique

Le traitement de la tâche se fait de manière cyclique.

Champ de saisie Intervalle

Obligatoire

Intervalle de temps après lequel la tâche est redémarrée (temps de cycle de la tâche)

  • En tant que définition de l'heure dans le format TIME#

    Exemple: t#200ms

  • En tant que nombre

    Exemple: 200

    Remarque : Le numéro s'affiche automatiquement au format TIME# lorsque le champ de saisie est de nouveau actif.

Remarque : Les écarts de la tâche par rapport à la durée de cycle de tâche souhaitée sont affichés lors de l'exécution sous forme de gigue périodique sur le Onglet : Surveillance onglet.

Unité de temps de l'intervalle

Si seul un nombre et non une définition de temps est spécifié dans le Intervalle champ de saisie, l'unité sélectionnée ici détermine les dimensions temporelles.

Exemple: Mme

Remarque : Un temps de cycle de tâche en µs est toujours affiché sous forme de nombre.

Tapez : _cds_icon_task_event_internal.png Événement

Le traitement de la tâche démarre événementiellement sur le front montant de la variable événement.

Champ de saisie Événement

Variable globale (type booléen)

La tâche démarre dès que la valeur de la variable passe de 0 à 1.

Tapez : _cds_icon_task_event_external.png Externe

Le traitement de la tâche démarre événementiellement sur le front montant de la variable événement.

Zone de liste Événement

Liste avec les événements cibles dépendant du système (type booléen)

Remarque : Le système cible détermine les événements pris en charge et proposés dans la zone de liste.

Astuce : à ne pas confondre avec les événements système.

Intervalle

Définition de l'heure dans TIME# format ou sous forme de nombre avec une unité de temps

Remarque : Uniquement disponible lorsque l'événement nécessite une définition d'heure

Tapez : _cds_icon_task_free.png Roue libre

Le traitement de la tâche redémarre automatiquement en boucle continue au démarrage du programme et après la fin d'une exécution après un certain temps d'attente

Important : Une fois l'exécution terminée, il faut attendre un certain temps avant que la tâche ne soit à nouveau exécutée. La durée est un pourcentage de la durée du dernier cycle.

Remarque : Vous ne définissez pas de durée de cycle.

Tapez : _cds_icon_task_event_status.png État

Le traitement de la tâche démarre déclenché par l'état des variables d'événement

Champ de saisie Événement

Variable globale (type booléen)

Lorsque la variable a l'état TRUE, la tâche commence à tourner en roue libre. La tâche s'exécute jusqu'à ce que la variable obtienne la valeur FALSE.

Remarque : La variable est généralement réinitialisée dans la tâche elle-même. Contrairement à la tâche événementielle, aucun événement ne peut être manqué de cette manière. Lorsqu'un événement se produit, le planificateur doit enregistrer une ancienne valeur, et celle-ci peut changer plus souvent qu'elle n'est vérifiée. Ainsi, si une variable d'événement change en TRUE pendant une courte période seulement, le planificateur peut ne pas détecter ce changement. Cela peut être évité avec une tâche d'état. La variable d'état est définie sur TRUE par une autre tâche et réinitialisée par la tâche d'état. Cela garantit que la tâche est exécutée une fois à chaque fois qu'elle passe à TRUE.

Important

Pour les bus de terrain, une matrice de cycle fixe est nécessaire pour assurer un comportement déterminé. Par conséquent, vous ne devez pas utiliser Taper Roue libre pour une tâche de cycle de bus.

Important

Notez la différence suivante entre les types de traitement Statut et Événement. Si l'événement donné donne TRUE, alors la condition de démarrage d'une tâche de type Statut est remplie. En revanche, le démarrage d'une tâche de type Événement nécessite un basculement de l'événement de FALSE pour TRUE. Si le taux d'échantillonnage du planificateur de tâches est trop faible, le front montant de l'événement peut passer inaperçu.

Important

Lors du réglage du temps de cycle de la tâche, vous devez identifier le système de bus actuellement utilisé. Par exemple, le temps de cycle de tâche dans un système de bus CAN doit correspondre au débit en bauds actuellement défini et au nombre de trames utilisées dans le bus. De plus, les durées définies pour la pulsation, la protection de nœud et la synchronisation doivent toujours être un multiple du temps de cycle de la tâche. Sinon, les trames CAN peuvent être perdues.

Pour plus d'informations, voir : Onglet : Surveillance

Chien de garde

Définit le temps de surveillance d'une tâche. Si le système cible prend en charge une configuration de chien de garde avancée, les paramètres suivants peuvent être prédéfinis dans la description de l'appareil.

  • Limite supérieure et inférieure

  • Heure du chien de garde par défaut

  • Temps spécifié en pourcentage

Les paramètres de surveillance par défaut dépendent de l'appareil.

Activer

_cas_icon_option_activated.png: Le chien de garde est actif.

Si la tâche dépasse la durée actuellement définie par le chien de garde, elle est interrompue avec un statut d'erreur (exception). L'application dans la tâche de laquelle l'erreur s'est produite et ses applications enfants sont également interrompues. De cette manière, toutes les tâches des applications concernées sont également interrompues. Ensuite, le actuellement défini Sensibilité est également pris en compte.

Si vous activez l'option Mettre à jour les E/S dans le Réglages PLC du PLC, puis CODESYS rétablit les valeurs par défaut définies pour les sorties.

. Cas possibles :
  • Délais d'attente multiples consécutifs :

    Sensibilité : 0, 1 – exception au cycle 1

    Sensibilité : 2 – exception au cycle 2

    Sensibilité : n – exception dans le cycle n

  • Timeout unique : Exception si le temps de cycle du cycle en cours est supérieur à (temps * sensibilité). Exemple : Time=t#10ms, Sensitivity=5 (c'est-à-dire, exception dès que la tâche ponctuelle dure plus de 50 ms)

Temps (p.ex. t#200ms)

Temps de chien de garde

Définit (avec Sensibilité) le chien de garde d'une tâche ; description comme pour Permettre.

Selon le système cible, l'intervalle de temps de surveillance est donné en pourcentage de l'intervalle de tâche si possible. Dans ce cas, la zone de liste de l'unité est désactivée et affiche %.

Sensibilité

Nombre

Définit (avec le chien de garde) le chien de garde pour une tâche ; description comme pour Permettre.

Astuce

Utilisation des fonctions de la bibliothèque CmpIecTask.library, vous pouvez désactiver un chien de garde pour des cycles API spécifiques. Ceci est utile pour les cycles qui demandent plus de temps en raison de l'initialisation.

Exemple 539. Exemple

Désactiver/réactiver le watchdog :

VAR
hIecTask : RTS_IEC_HANDLE;
END_VAR

hIecTask := IecTaskGetCurrent(0);
IecTaskDisableWatchdog(hIecTask); //Watchdog disabled
...
IecTaskEnableWatchdog(hIecTask); //Watchdog enabled

Le watchdog est désactivé avant l'initialisation avec IecTaskDisableWatchDog pour le reste du cycle et se réactive automatiquement au cycle suivant.

Le watchdog peut être réactivé après initialisation avec IecTaskEnableWatchDog. Le chien de garde est alors déjà réactivé pour le reste du cycle (la fenêtre de temps du chien de garde recommence depuis le début).



Initialisations de blocs fonctionnels qui se produisent dans FB_Init méthode n'est pas affectée par cela. Mais il y avait une limite de < 30 secondes en raison du délai de communication. Cette limite de temps n'existe plus depuis la version 3.5 SP18 car les services en ligne sont exécutés

Astuce

Le chien de garde normal d'une tâche CEI est déclenché lorsque le temps d'exécution de la tâche CEI dépasse le temps de chien de garde.

Le chien de garde "Cycle omis" est déclenché lorsque la tâche ne démarre pas du tout. C'est le cas lorsque la tâche n'exécute aucun cycle dans le délai maximum de <Temps * Sensibilité> ou <2 * Intervalle>. La cause peut être un engorgement par d'autres tâches ou une défaillance du planificateur, qui n'active plus la tâche.

Appels de programme

POU (POU objet avec type PROGRAM) qui sont appelés successivement par la tâche

L'ordre dans lequel les POU sont appelés correspond à l'ordre d'appel configuré ici de haut en bas.

_cds_icon_task_add.png Ajouter un appel

Ouvre l'assistant de saisie. Sélectionnez un PROGRAM POU. Lorsque vous cliquez OK pour quitter l'assistant de saisie, celui-ci est ajouté à la liste ci-dessous en tant que nouvel appel.

_cds_icon_task_delete.png Supprimer l'appel

Supprime l'appel

_cds_icon_task_edit.pngModifier l'appel

Ouvre l'assistant de saisie pour l'appel sélectionné. Sélectionnez un autre PROGRAM POU. L'appel est modifié lorsque vous cliquez OK pour quitter l'assistant de saisie.

_cds_icon_task_moveup.png Monter

_cds_icon_task_movedown.png Descendre

Déplace la position de l'appel vers le haut ou vers le bas dans la liste. L'ordre des appels change en conséquence lors de l'exécution.

_cds_icon_task_openpou.png Ouvrir la POU

Ouvre l'éditeur POU avec la déclaration et la mise en œuvre du PROGRAM POU